package com.wpp;

import org.junit.Test;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public class MethodTest {

    @Test
    public void test() {

        //getMethods():获取当前运行时类及其父类所有声明为public访问权限的方法
        //getDeclaredMethods():获取当前运行时类中声明的所有访问权限的方法，不包括父类的

        //getConstructors():获取当前运行时类中声明为public权限的构造器
        //getDeclaredConstructors():获取当前运行时类中声明的所有访问权限的方法，不包括父类的

        //getSuperclass():获取运行时类的父类
        //getGenericSuperclass():获取运行时类的带泛型的父类


        Class cls = Person.class;
        Method[] methods = cls.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println(method);
            String name = method.getName();//获取方法的名字
            System.out.println(name);


            //获取方法声明的注解,注解声明为RUNTIME才能获取
            Annotation[] annotations = method.getAnnotations();
            for (Annotation annotation : annotations) {
                System.out.println(annotation);
            }
            System.out.println("**********************");
        }


    }


}
